package cn.iocoder.yudao.module.crossborder.platform.service.provider.base;

import java.util.Map;

/**
 * Webhook提供商抽象基类
 *
 * @author 芋道源码
 */
public abstract class BaseWebhookProvider {

    /**
     * 处理Webhook事件
     *
     * @param payload 事件载荷
     * @param headers 请求头信息
     * @return 处理结果
     */
    public abstract boolean handleWebhookEvent(String payload, Map<String, String> headers);

    /**
     * 处理订阅确认
     *
     * @param payload 确认载荷
     * @param headers 请求头信息
     * @return 处理结果
     */
    public abstract boolean handleSubscriptionConfirmation(String payload, Map<String, String> headers);

    /**
     * 验证签名
     *
     * @param payload 事件载荷
     * @param headers 请求头信息
     * @return 验证结果
     */
    protected abstract boolean validateSignature(String payload, Map<String, String> headers);

    /**
     * 解析事件类型
     *
     * @param payload 事件载荷
     * @return 事件类型
     */
    protected abstract String parseEventType(String payload);

    /**
     * 处理具体事件
     *
     * @param eventType 事件类型
     * @param payload 事件载荷
     * @return 处理结果
     */
    protected abstract boolean processEvent(String eventType, String payload);

}
